//自定义配置新建一个axios对象
var $axios = axios.create({
	baseURL: 'http://localhost:8080/',
	// `withCredentials` 表示跨域请求时是否需要使用凭证
	withCredentials: true,
	changeOrigin:true
})

//判断Vue是否存在
if(Vue){
	//将$axios设置为Vue的原型属性；axios返回的全是Promise对象，对象可以保存状态
	Vue.prototype.$axios=$axios;
	//为Vue添加一个ajax的原型函数
	//参数为返回值为Promise对象的一个函数
	Vue.prototype.$ajax=function(getPromiseHandler){
		//创建一个promise对象
		let promise=new Promise((resolve,reject)=>{
			try{
				//显示加载层提示
				var loadIndex=layer.load();
				//执行传入的函数
				getPromiseHandler
				.then((response)=>{
					//关闭加载提示
					layer.close(loadIndex);
					//获得响应结果
					let result=response.data;
					console.log(result);
					//检测该请求是否需要进行登录验证
					//如果result对象包含LoginSign就需要 进行登录验证，若不包含就不需要进行登录验证
					if(!result.hasOwnProperty("login")){
						//用户已登录，不需要进行登录验证
						resolve(result);//继续执行原请求及响应
						return;//当前函数执行结束
					}
					//判断用户是否已登录
					if(!result.login){
						//表示用户未登录，弹出提示信息，跳转到登录页面
						layer.msg('请登陆后访问',{icon:2,time:2000},
							()=>{
								// window.top.location.href 指最外层的页面跳转
								window.top.location.href="../static/safty/login/index.html";
								//location.href="../login/index.html"
							})
						
					}
					//用户已登录
					resolve(result);//继续执行原请求及响应
				})
				.catch((err)=>{
					//关闭加载提示
					layer.close(loadIndex);
					console.log(err);
					//未获得服务端响应
					if(!err.response) {
						layer.msg('错误:' + err.message, { icon: 2, time: 1500 });
						reject(err);
						return;
					}
					//服务端响应错误
					if(err) {
						layer.msg('错误:' + err.request.status, { icon: 2, time: 1500 });
						reject(err);
						return;
					}
				})
				
			}catch(err){
				layer.close(loadIndex);
				layer.msg("js代码错误："+err.message,{icon:2,time:1500});
				
			}
		})
		return promise;
	}
	
	
	//向Vue中添加一个$myGet原型函数
	Vue.prototype.$myGet=function(url,config){
		//创建一个Promise对象
		let promise=new Promise((resolve,reject)=>{
			//调用原型函数$ajax,传入所需的参数(调用原型属性$axios)
			this.$ajax(this.$axios.get(url,config))
			.then((result)=>{
				resolve(result);//成功对象，继续执行
			});
		});
		return promise;
	}
	//向Vue中添加一个$myPost原型函数
	Vue.prototype.$myPost=function(url,config){
		//创建一个Promise对象
		let promise=new Promise((resolve,reject)=>{
			//调用原型函数$ajax,传入所需的参数(调用原型属性$axios)
			this.$ajax(this.$axios.post(url,config))
			.then((result)=>{
				resolve(result);//成功对象，继续执行
			});
		});
		return promise;
	}
	//向Vue中添加一个$myPut原型函数
	Vue.prototype.$myPut=function(url,config){
		//创建一个Promise对象
		let promise=new Promise((resolve,reject)=>{
			//调用原型函数$ajax,传入所需的参数(调用原型属性$axios)
			this.$ajax(this.$axios.put(url,config))
			.then((result)=>{
				resolve(result);//成功对象，继续执行
			});
		});
		return promise;
	}
	
	
}
